package main

import (
	"fmt"
	"os"
)

/**
 函数版学生管理系统
	写洗个系统能够查看\新增\删除学生
**/

type student struct {
	id   int64
	name string
}

var (
	allStudent map[int64]*student
)

func newStudent(id int64, name string) *student {
	return &student{
		id:   id,
		name: name,
	}
}

func showAllStudent() {
	// 打印所有学生
	for i, s := range allStudent {
		fmt.Printf("学号: %d 姓名: %s\n", i, s.name)
	}
}

func addStudent() {
	// 添加一个新的学生
	// 获取用户输入
	var (
		id   int64
		name string
	)
	fmt.Print("请输入学号：")
	fmt.Scanln(&id)
	fmt.Print("请输入姓名：")
	fmt.Scanln(&name)
	// 调用构造函数
	newStu := newStudent(id, name)
	allStudent[id] = newStu
	defer showAllStudent()
	//追加到 allStudent2

}

func deleteStudent() {
	// 输入要删除用户的学号
	var (
		deleteId int64
	)
	fmt.Scanln(&deleteId)
	// 删除对应allStudent对应的键值对
	delete(allStudent, deleteId)
}
func main() {
	allStudent = make(map[int64]*student, 48) // 初始化开辟内存空间
	// 打印菜单
	for {
		fmt.Println("欢迎光临学生管理系统")
		fmt.Println(`
		1. 查看所有学生
		2.新增学生
		3.删除学生
		4.退出
		`)
		fmt.Println("请输入你要干啥：")

		// 等待用户选择
		var choice int
		fmt.Scanln(&choice)
		fmt.Printf("你选择了%d这个选项！\n", choice)
		// 执行对应的函数
		switch choice {
		case 1:
			showAllStudent()
		case 2:
			addStudent()
		case 3:
			deleteStudent()
		case 4:
			os.Exit(1)
			// 退出
		default:
			fmt.Println("输入有误")
		}
	}

}
